package com.mthree;

import java.util.*;

/**
 * 准备一个 HashMap 集合，统计字符串"123,456,789,123,456"中每个数字字符串出现的次数并打印出来。
 * <p>
 * 如：
 * <p>
 * 123 出现了 2 次
 * <p>
 * 456 出现了 2 次
 * <p>
 * 789 出现了 1 次
 */
public class ThreeTest {
    public static void main(String[] args) {
        //1.创建map集合，
        Map</*Integer, */String, Integer> hashMap = new HashMap<>();
        //2.声明String变量，且赋值
        String str = new String("123,456,789,123,456");
        //3.使用split方法将字符串分割并且保存到String类型的数组中
        //split()方法：参数regex为正则表达式，以regex所表示的字符串为分隔符，将字符串拆分成字符串数组
        String[] split = str.split(",");
        //4.使用for each打印数组内容
        //for (String s : split) System.out.println(s);
        //5.使用for循环对split数组进行遍历
        for (int i = 0; i < split.length; i++) {
            //7.if判断，如果判断集合中是否包含指定的Key，则执行if一下代码块，否则执行else下的代码块
            //containsKey():判断集合中是否包含指定的Key
            if (hashMap.containsKey(split[i])/*containsValue(split[i])*/) {
                //get()返回与参数Key所对应的Value对象，如果不存在则返回null
                hashMap.put(/*i*/split[i], hashMap.get(split[i]) + 1);
            } else {
                //get()返回与参数Key所对应的Value对象，如果不存在则返回null
                //6.将split数组中的值保存到map集合中的key值，并且value值为1，用于记录如果key相同的话value+1记录
                hashMap.put(/*i*/split[i],1);
            }
        }
        //keySet():返回此映射中包含的键的Set视图
        //8.使用keyset方法返回set集合
        Set<String> strings = hashMap.keySet();
        //使用for each对set集合进行遍历
        for (String s:strings) System.out.println(""+s+"出现了"+hashMap.get(s)+"次");


    }
}
